#pragma once

#include <assert.h>
#include <any>
#include <typeindex>
#include <unordered_map>

#include <mutex>

#include "qbe/src/ecs/bus.hpp"

class TransferStation {
 public:
  static TransferStation* Instance() {
    static TransferStation* instance = new TransferStation;
    return instance;
  }

  qbe::ecs::Bus& get_bus(uint32_t id) { return bus_map[id]; }

 private:
  TransferStation() {}

  std::unordered_map<uint32_t, qbe::ecs::Bus> bus_map;
};